import java.util.Scanner;

public class Test4 {
    // https://www.nowcoder.com/practice/196141ecd6eb401da3111748d30e9141

    /**
     * 奇数位丢弃
     * 假设n=10
     * 那么模拟一下删除过程
     * 0 1 2 3 4 5 6 7 8 9 10
     * 第一次删除：0 2 4 6 8 10  剩下：1 3 5 7 9
     * 第二次删除: 1 5 9         剩下 3 7
     * 第三次删除：3              剩下 7
     * 第四次删除：7
     * 可以发现规律，每一次删除的第一个数据都是 2^n-1，所以我们只需要求出需要经过多少次删除只剩一个数字就可以了
     * @param args
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int count = 0;
            while (n > 1) {
                count++;
                n /= 2;
            }
            System.out.println((int)Math.pow(2, count)-1);
        }
    }
}
